package com.utils;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.mysqlconn.Conn03;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

/**
 * @author wzm
 * @create 2023-06-13 9:21
 */
//将获取连接 和 关闭连接的功能作为一个工具类
public class JDBCUtils {
//定义为成员变量  全局使用
    private static DataSource dataSource = null;

    //类加载时就会执行 一直存在内存中
    static {
        try {
            Properties properties = new Properties();
            properties.load(
                    JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties")
            );
            dataSource = DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }




    /**
     * 获取数据库连接的方法
     * @return 返回获取的数据库连接对象
     */
     public static Connection getConn(){
         try {
             return dataSource.getConnection();
         } catch (SQLException e) {
             e.printStackTrace();
         }
         return null;//成功返回上方的连接信息  失败返回null
     }


    /**
     * 关闭数据库资源的方法
     * @param connection 需要关闭的连接对象
     */
    public static void closeRes(Connection connection, PreparedStatement ps, ResultSet rs){
        //后开先关
        try {
            if(rs != null){
                rs.close();//rs
            }

            if(ps != null){
               ps.close();//ps
            }

            if(connection != null){
               connection.close();//connection
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }





        if(connection != null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }



    }


    /**
     * 关闭数据库资源的方法
     * @param connection 需要关闭的连接对象
     */
    public static void closeRes(Connection connection, PreparedStatement ps){
        //后开先关
        try {


            if(ps != null){
                ps.close();//ps
            }

            if(connection != null){
                connection.close();//connection
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }





        if(connection != null){
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }



    }



}
